<?
/**
 * Обрезает строку до заданного количества символов.
 *
 * Подробное описание плагина находится по адрес...
 *
 *
 * {{!truncate <text> 10}}
 *  length -- (максимальная) длина строки на выходе
 *  sep -- разделитель, который помещается на место вырезанного куска ("...")
 *  from {'begin', 'middle', 'end'} -- откуда вырезать
 *
 */

$input = strip_tags($params[0]);
$length = isset($params['length']) ?  $params['length'] : $params[1];
$separator = isset($params['sep']) ?  $params['sep'] : '…';
$from = isset($params['from']) ?  $params['from'] : 'middle';


$strlen = 'mb_strlen';
$substr = 'mb_substr';
$separator_len = $strlen($separator);
$input_len = $strlen($input);


if ($input_len > $length) {
	$out = '';
	switch ($from) {
	case 'begin': // многа ...
		$out .= $substr($input, 0, $length - $separator_len);
		$out .= $separator;
		break;
	case 'middle':
		$out .= $substr($input, 0, (int)ceil(($length - $separator_len)/ 2));
		$out .= $separator;
		$out .= $substr($input, - (int)floor(($length - $separator_len)/ 2));
		break;
	case 'end':
		$out .= $separator;
		$out .= $substr($input, - ($length - $separator_len));
		break;
	}
} else {
	$out = $input;
}

echo $out;

?>
